package com.project.mapper;


import com.project.bean.RoleBean;
import com.project.bean.UserBean;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户mapper
 */
public interface IUserMapper {

    /**
     * 用户登录
     * @param code 用户名
     * @param pwd 密码
     * @return
     */
    public UserBean login(@Param("code") String code, @Param("pwd") String pwd);


    /**
     * 按姓名查询用户  姓名为空就查询全部  不需要查询对应的角色信息
     * @param name 用户姓名
     * @return 用户分页对象
     */
    public List<UserBean> findByItem(@Param("name") String name);

    /**
     *  要先判断用户名是否存在
     * @param code 用户名
     * @return
     */
    public int checkUser(@Param("code") String code);

    /**
     * 添加用户 ，要先判断用户名是否存在 根据用户id添加角色集合，到中间表。
     * @param user
     */
    public void addUser(UserBean user);

    /**
     * 添加用户 的角色列表到中间表
     * @param userId 用户id
     * @param roleIdArray 角色id列表
     */
    public void addUserRole(@Param("userId") int userId, @Param("roleIdArray") int[] roleIdArray);

    /**
     * 根据用户id删除用户，要先删除所有用户id的中间表数据
     * @param id
     */
    public void delUser(int id);

    /**
     * 根据用户id 查询用户 同时查询用户对应的权限集合
     * @param id
     * @return
     */
    public UserBean findById(int id);

    /**
     * 根据用户id查询用户的角色集合
     * @param id
     * @return
     */
    public List<RoleBean> findByUserId(int id);

    /**
     * 修改用户角色，先根据用户id删除角据色用户中间表的相关数，在把用户id和新的角色集合添加到中间表
     * @param id
     * @param roleIdArray
     */
    public void update(@Param("id") int id, @Param("roleIdArray") int[] roleIdArray);


    /**
     * 用户修改密码
     * @param id  用户id
     * @param newPwd 新密码
     */
    public void updatePwd(@Param("id") int id, @Param("newPwd") String newPwd);
}
